package com.example.card.smarthome.zigbee.so;

public class CANRS485Uart {
	public CANRS485Uart(){
		try {
			System.loadLibrary("CANRS485");
		} catch (UnsatisfiedLinkError ule) {
		}
	}
	
	private int fd;
	/**
	 * 打开串口
	 * 
	 * @param i
	 *            串口号
	 * @return 成功：fd>0;失败：-1
	 * 
	 * nodelay  1为不阻塞  0为阻塞
	 */
	public   native int openUart(int i,int nodelay); // 打开串口
	
	public void open(int i,int nodelay){
		fd = openUart(i,nodelay);
	}
	/**
	 * 关闭串口
	 * 
	 * @param i
	 */
	public   native void closeUart(int fd,int i);// 关闭串口
	
	public void close(int i){
		closeUart(fd,i);
	}
	
	/**
	 * 设置串口波特率
	 * 
	 * @param i
	 *            波特率 例如：38400、115200
	 * @return 成功：0;失败：-1
	 */
	public   native int setUart(int fd,int i);// 设置串口波特率
	
	public void setuart(int i){
		setUart(fd,i);
	}
	/**
	 * 发送数据
	 * 
	 * @param msg
	 *            数据
	 * @return
	 */
	public   native int sendMsgUart(int fd,String msg);// 发送信息
	  
	/**
	 * 接收数据
	 * 
	 * @return
	 */
	public   native String receiveMsgUart(int fd);// 接收信息
	/**
	 * 
	 * @param databits
	 *            数据长度
	 * @param stopbits
	 *            停止位
	 * @param parity
	 *            校验类型（(int)n/N 无校验；(int)o/O 奇校验;(int)e/E 偶校验）
	 * @return
	 */
	public   native int setParity(int fd, int databits, int stopbits, int parity);// 设置奇偶校验
	
	public int set_Parity( int databits, int stopbits, int parity){
		return setParity(fd, databits, stopbits, parity);
	}
	/**
	 * 发送字节数组数据
	 * 
	 * @param msg
	 *            字节数组数据
	 * @return int
	 */
	public   native int sendByteUart(int fd, byte[] msg);
	
	public int send_ByteUart(byte[] msg){
		return sendByteUart(fd,msg);
	}
	/**
	 * 接收字节数组数据
	 * 
	 * @return
	 */
	public   native byte[] receiveByteUart(int fd);
	public byte[] recieve_ByteUart(){
		return receiveByteUart(fd);
	}
	/*
	 * 设置阻塞时间
	 * 参数一为句柄
	 * 参数二 为阻塞时间  单位为100ms
	 * 只在openUart时设置为阻塞才有用（设置为0）
	 * **/
	public native int setTimeout(int fd,int timeout);
	
	public void set_Timeout(int timeout){
		setTimeout(fd,timeout);
	}
}
